package practica2bc.recuperacion;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;

import javax.swing.*;

import practica2bc.VentanaRecuperacion;
import practica2bc.anotacion.Foto;

public class Viewer extends JPanel {
	        
	        private static final long serialVersionUID = -1207135309861900141L;
	        private ArrayList<Foto> urls;
	        int actual;
	        private JButton avanzar;
	        private JButton retroceder;
	        private JPanel panelCentral;
	        private JLabel fotografia;
	        
	        public Viewer(){
	                actual = 0;
	                avanzar = new JButton(">");
	                avanzar.setToolTipText("Siguiente estado");
	                avanzar.addActionListener(new OyenteAvanzar());
	                avanzar.setEnabled(false);
	                retroceder = new JButton("<");
	                retroceder.setToolTipText("Estado anterior");
	                retroceder.addActionListener(new OyenteRetroceder());
	                retroceder.setEnabled(false);
	                this.setLayout(new BorderLayout());
	                add(avanzar, BorderLayout.EAST);
	                add(retroceder, BorderLayout.WEST);
	                fotografia = new JLabel();
	                panelCentral=new JPanel();
	                JScrollPane contenedor = new JScrollPane(panelCentral);
	                add(contenedor,BorderLayout.CENTER);
	                panelCentral.add(fotografia);
	                panelCentral.setSize(500,500);
	                avanzar.setEnabled(false);
	                retroceder.setEnabled(false);
	        }
	        
	        public void vaciar(){
	                panelCentral.remove(fotografia);
	                fotografia = new JLabel();
	                panelCentral.add(fotografia);
	                panelCentral.setSize(500,500);
	                avanzar.setEnabled(false);
	                retroceder.setEnabled(false);
	        }
	        
	        public void nuevaLista(ArrayList<Foto> lista){
	                urls = lista;
	                if (lista.size()>1) avanzar.setEnabled(true);
	                retroceder.setEnabled(false);
	                actual = 0;
	                panelCentral.remove(fotografia);
	                fotografia = new JLabel(new ImageIcon(urls.get(actual).getUrlFoto()));
	                VentanaRecuperacion.getInstancia().setDescripcion(urls.get(actual).getUrlDescripcion());
	                panelCentral.add(fotografia);
	                panelCentral.setSize(500,500);
	        }
	        
	        class OyenteRetroceder implements ActionListener {

	                public void actionPerformed(ActionEvent e) {
	                        if (actual != 0) {
	                                actual--;
	                                remove(fotografia);
	                                vaciar();
	                                fotografia = new JLabel(new ImageIcon(urls.get(actual).getUrlFoto()));
	                                VentanaRecuperacion.getInstancia().setDescripcion(urls.get(actual).getUrlDescripcion());
	                                panelCentral.add(fotografia);
	                                panelCentral.setSize(500,500);
	                                avanzar.setEnabled(true);
	                                if (actual == 0){
	                                        retroceder.setEnabled(false);
	                                }
	                                else {
	                                        retroceder.setEnabled(true);
	                                }
	                        } 
	                }
	        }

	        	        
	        class OyenteAvanzar implements ActionListener {

	                public void actionPerformed(ActionEvent e) {
	                        if (actual != urls.size() - 1) {
	                                actual++;
	                                remove(fotografia);
	                                vaciar();
	                                fotografia = new JLabel(new ImageIcon(urls.get(actual).getUrlFoto()));
	                                VentanaRecuperacion.getInstancia().setDescripcion(urls.get(actual).getUrlDescripcion());
	                                panelCentral.add(fotografia);
	                                panelCentral.setSize(500,500);
	                                retroceder.setEnabled(true);
	                                if (actual == urls.size()-1) {
	                                        avanzar.setEnabled(false);
	                                }
	                                else {
	                                        avanzar.setEnabled(true);
	                                }
	                        } 
	                        
	                }
	        }
}
